#pragma once

#include <string>

#include "codegenerator.h"

using std::vector;
using std::string;
using std::map;

using namespace Thinder;

string generateDeclarations(ParseTree::Name ns, vector<ParseTree::Declaration> &decls);
string generateDeclaration(ParseTree::Name ns, ParseTree::Declaration &decl);
string generateClassDeclarations(ParseTree::Name ns, vector<ParseTree::ClassDeclaration> &decls);
string generateClassDeclaration(ParseTree::Name ns, ParseTree::ClassDeclaration &decl);
ParseTree::Name findOverload(ParseTree::Name ns, ParseTree::Name name, ParseTree::Declaration &decl);

